<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //  defer 属性
        // async 属性
        // 把js外部引入的文件放到页面底部，来让js最后引入，从而加快页面加载速度

        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
        // ECMAScript是JavaScript的核心，规定了JS的语法规范
        // DOM是文档对象模型
        // BOM是浏览器对象模型

        // 3.JavaScript 的数据类型有哪些？（5）
        // 简单数据类型：String、Number、Boolean、Undefined、Null、Symbol
        // 引用数据类型：Object、Array、Function

        // 4.如何进行数据类型的判断？（5）
        // typeof 检测的数据
        // 检测的数据 instanof 数据类型
        // Object.prototype.toString.call()

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        // undefined  声明了变量，但未赋值，表无意义（空值）
        // null 指的是空的对象

        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
        // 

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        // contiune 结束当前循环，并进入下一个循环
        // break 终止循环

        // 8.如何判断字符串内是否包含指定字符？（5）
        // 利用indexOf()方法，如果有指定字符，则返回对应的索引值，否则返回-1

        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        // 1、不会改变原数组
        // concat()
        // join()
        // slice()
        // indexOf()
        // lastIndexOf()
        // includes()

        // 2、改变原数组
        // splice
        // reverse()
        // push()
        // unshift()
        // pop()
        // shift()

        // 10. 请写出下面语句的输出结果：（5）
        // let bar = true,
        //     number = 0;
        // console.log(bar + 0); //1
        // console.log(bar + "xyz"); //truexyz
        // console.log(bar + true); //2
        // console.log(+true); //1
        // console.log(!'bluej'); //false
        // console.log(number++); //0
        // console.log(++number); //2
        // console.log(number); //2

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // let userTime = new Date(window.prompt("请输入目标时间")).getTime(); //获取用户时间的毫秒数
        // let nowTime; //获取当前的毫秒数
        // let times; //获取时间差的秒数
        // let day, hour, minute, second; //天，小时，分钟，秒
        // function padT(n) {
        //     return n < 10 ? '0' + n : n;
        // }

        // function time() {
        //     console.clear();
        //     nowTime = +new Date();
        //     times = (userTime - nowTime) / 1000;
        //     if (times < 0) {
        //         userTime = new Date(window.prompt("时间已过，请重新输入时间:")).getTime();
        //     } else {
        //         day = Math.floor(times / 60 / 60 / 24);
        //         hour = Math.floor(times / 60 / 60 % 24);
        //         minute = Math.floor(times / 60 % 60);
        //         second = Math.floor(times % 60);
        //         day = padT(day), hour = padT(hour), minute = padT(minute), second = padT(second);
        //         return console.log('距离您指定的时间还剩' + day + '天' + hour + '小时' + minute + '分钟' + second + '秒');
        //     }
        // }
        // let timer = setInterval(time, 1000)



        // // 13.把下面数组成员排序打乱；（5）
        // let arr = [10, 20, 30, 40, 50, 60];
        // let newArr = [];
        // let index; //获取数组arr的索引值

        // function fn(min, max) {
        //     let res = Math.random() * (max - min + 1);
        //     return Math.floor(res + min);
        // }
        // while (newArr.length < arr.length) {
        //     index = fn(0, arr.length - 1);
        //     if (!newArr.includes(arr[index])) {
        //         newArr.push(arr[index]);
        //     }
        // }
        // console.log(newArr);

        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
        // let arr = [];
        // let num;
        // let flag;

        // function fn(min, max) {
        //     let res = Math.random() * (max - min);
        //     return Math.floor(res + min);
        // };
        // while (arr.length < 5) {
        //     flag = true;
        //     num = fn(10, 58);
        //     for (let i = 2; i < num; i++) {
        //         if (num % i === 0) {
        //             flag = false;
        //             break;
        //         }
        //     }
        //     if (flag && !arr.includes(num)) {
        //         arr.push(num);
        //     }

        // };
        // console.log(arr);


        // num = fn(10, 58);
        // for (let i = 2; i < num; i++) {
        //     if (num % i === 0) {
        //         flag = false;
        //         break;
        //     }
        // }
        // if (flag) {
        //     console.log(num);
        //     console.log(flag);
        // } else {
        //     console.log('不是素数');
        //     console.log(flag);
        // }

        // 14. 将多个数组进行去重合并；（ 10）
        // let arr1 = [1, 2, 3],
        //     arr2 = [2, 3, 4, 5];
        // let arr3 = arr1.concat(arr2);
        // let newArr = [];
        // for (let i = 0; i < arr3.length; i++) {
        //     if (newArr.indexOf(arr3[i]) === -1) {
        //         newArr.push(arr3[i])
        //     }
        // }
        // console.log(newArr);

        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        // let arr = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
        // let newArr = []; //重复的元素
        // let obj = {}; //统计每个元素出现的次数
        // for (let i = 0; i < arr.length; i++) {
        //     if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i]) && !newArr.includes(arr[i])) {
        //         newArr.push(arr[i]);
        //     }
        //     if (obj[arr[i]] > 0) {
        //         obj[arr[i]] = obj[arr[i]] + 1;
        //     } else {
        //         obj[arr[i]] = 1;
        //     }
        // };
        // console.log(obj);
        // console.log(newArr);


        // // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        // let arr = [{
        //     name: "111",
        //     sex: "boy",
        //     age: 18,
        //     count: 20
        // }, {
        //     name: "222",
        //     sex: "girl",
        //     age: 17,
        //     count: 30
        // }, {
        //     name: "333",
        //     sex: "boy",
        //     age: 16,
        //     count: 40
        // }, {
        //     name: "444",
        //     sex: "girl",
        //     age: 15,
        //     count: 50
        // }, {
        //     name: "555",
        //     sex: "boy",
        //     age: 20,
        //     count: 60
        // }, {
        //     name: "666",
        //     sex: "girl",
        //     age: 13,
        //     count: 70
        // }, {
        //     name: "777",
        //     sex: "boy",
        //     age: 14,
        //     count: 80
        // }];
        // let newArr = [];
        // arr.forEach(function(item) {
        //     if (item['age'] < 18 && item['sex'] == 'girl') {
        //         newArr.push(item)
        //     }
        // })
        // newArr.forEach(function(item) {
        //     item['count'] = item['count'] * item['count'];
        // })
        // console.log(newArr);
    </script>
</body>

</html>